package com.zzy.system.domain;

import com.alibaba.fastjson2.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zzy.common.core.domain.BaseEntity;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 订单实体类，用于表示订单的各种属性信息。
 */
@Data
public class SaleOrderTrace extends BaseEntity {
    //主键 自增
    @TableId(type = IdType.AUTO)
    private Integer saleOrderTraceId;
    private static final long serialVersionUID = 1L;

    /**
     * 检查报告Id，用于唯一标识每份检测报告，在整个业务系统中，通过该Id可以准确查询、关联和操作对应的检测报告记录，具有唯一性。
     */
    @JSONField(name = "id")
    private int id;

    /**
     * 检查报告名称，直观展示检测报告的具体名称，方便业务人员在众多报告中识别和区分不同的检测报告内容，通常包含了检测对象、检测项目等相关关键信息。
     */
    @JSONField(name = "report_name")
    private String reportName;

    /**
     * 检测日期，以字符串形式记录检测行为实际发生的时间，格式一般遵循特定的业务约定（如 "yyyy-MM-dd" 等），用于明确检测活动的时间顺序以及后续数据统计、查询等业务操作基于时间维度的筛选。
     */
    @JSONField(name = "detect_date")
    private String detectDate;

    /**
     * 检测机构，记录实施检测行为的机构名称，明确检测工作是由哪个专业机构完成的，便于对检测结果的权威性、可靠性等进行评估以及后续业务合作、溯源等相关操作。
     */
    @JSONField(name = "detect_institution")
    private String detectInstitution;

    /**
     * 送测机构，指将待检测样本等相关物品送往检测机构的机构名称，反映了检测需求的发起方，对于追溯检测流程、责任划分以及业务往来关系梳理等方面有着重要作用。
     */
    @JSONField(name = "detect_sender")
    private String detectSender;

    /**
     * 有效状态，以整数形式表示检测报告当前是否处于有效可用状态，取值范围限定为1（表示有效）和2（表示失效），用于业务系统中快速判断报告能否作为有效依据来使用，例如在数据展示、业务决策等环节会依据该状态进行相应处理。
     */
    @JSONField(name = "status")
    private int status;

    /**
     * 上传人，记录将检测报告上传到业务系统的具体人员姓名，便于了解报告的录入来源以及后续如有问题可以追溯到具体责任人，在系统的操作记录、审计等方面有重要意义。
     */
    @JSONField(name = "uploader")
    private String uploader;

    /**
     * 上传时间，以字符串形式记录检测报告被上传至业务系统的时间点，格式同样遵循业务约定（如 "yyyy-MM-dd HH:mm:ss" 等），用于业务操作的时间记录、流程跟踪以及数据时效性判断等操作。
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(name = "create_time")
    private Date guanmaiTraceCreateTime;
    //图片
    @JSONField(name = "pictures")
    @TableField(exist = false)
    private List<SaleOrderTracePictures> pictures;
    //商品明细
    @JSONField(name = "spus")
    @TableField(exist = false)
    private List<SaleOrderTraceSpus> spus;
    //绑定订单id
    private String orderId;




}